@blackcode_sa/metaestetics-api 1.15.17-staging.0 → 1.15.17-staging.10

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.
@@ -1420,6 +1420,7 @@ interface AdminToken {
1420
1420
  email?: string | null;
1421
1421
  status: AdminTokenStatus;
1422
1422
  usedByUserRef?: string;
1423
+ clinicGroupId: string;
1423
1424
  createdAt: Timestamp;
1424
1425
  expiresAt: Timestamp;
1425
1426
  }
@@ -1558,7 +1559,8 @@ interface ClinicGroup {
1558
1559
  clinicsInfo: ClinicInfo[];
1559
1560
  admins: string[];
1560
1561
  adminsInfo: AdminInfo[];
1561
- adminTokens: AdminToken[];
1562
+ /** @deprecated Tokens now stored in subcollection clinic_groups/{id}/adminTokens */
1563
+ adminTokens?: AdminToken[];
1562
1564
  ownerId: string | null;
1563
1565
  createdAt: Timestamp;
1564
1566
  updatedAt: Timestamp;
@@ -1420,6 +1420,7 @@ interface AdminToken {
1420
1420
  email?: string | null;
1421
1421
  status: AdminTokenStatus;
1422
1422
  usedByUserRef?: string;
1423
+ clinicGroupId: string;
1423
1424
  createdAt: Timestamp;
1424
1425
  expiresAt: Timestamp;
1425
1426
  }
@@ -1558,7 +1559,8 @@ interface ClinicGroup {
1558
1559
  clinicsInfo: ClinicInfo[];
1559
1560
  admins: string[];
1560
1561
  adminsInfo: AdminInfo[];
1561
- adminTokens: AdminToken[];
1562
+ /** @deprecated Tokens now stored in subcollection clinic_groups/{id}/adminTokens */
1563
+ adminTokens?: AdminToken[];
1562
1564
  ownerId: string | null;
1563
1565
  createdAt: Timestamp;
1564
1566
  updatedAt: Timestamp;
@@ -4961,7 +4961,7 @@ var ClinicAggregationService = class {
4961
4961
  try {
4962
4962
  await groupRef.update({
4963
4963
  clinicsInfo: admin8.firestore.FieldValue.arrayUnion(clinicInfo),
4964
- clinicIds: admin8.firestore.FieldValue.arrayUnion(clinicId),
4964
+ clinics: admin8.firestore.FieldValue.arrayUnion(clinicId),
4965
4965
  updatedAt: admin8.firestore.FieldValue.serverTimestamp()
4966
4966
  });
4967
4967
  console.log(
@@ -4883,7 +4883,7 @@ var ClinicAggregationService = class {
4883
4883
  try {
4884
4884
  await groupRef.update({
4885
4885
  clinicsInfo: admin8.firestore.FieldValue.arrayUnion(clinicInfo),
4886
- clinicIds: admin8.firestore.FieldValue.arrayUnion(clinicId),
4886
+ clinics: admin8.firestore.FieldValue.arrayUnion(clinicId),
4887
4887
  updatedAt: admin8.firestore.FieldValue.serverTimestamp()
4888
4888
  });
4889
4889
  console.log(
package/dist/index.d.mts CHANGED
@@ -4507,6 +4507,139 @@ interface UpdateResourceBlockingEventParams {
4507
4507
  description?: string;
4508
4508
  }
4509
4509
 
4510
+ /**
4511
+ * Concern Explorer types — patient-facing "Explore by Concern" feature.
4512
+ *
4513
+ * Concerns are editorial content stored in Firestore `concerns` collection,
4514
+ * managed from the Backoffice admin dashboard.
4515
+ */
4516
+ /** Supported languages for multilingual content */
4517
+ type SupportedLanguage = 'en' | 'fr' | 'de' | 'it';
4518
+ /** Multilingual string — one value per supported language */
4519
+ type LocalizedString = Record<SupportedLanguage, string>;
4520
+ /** Relevance level of a treatment for a specific concern */
4521
+ type TreatmentRelevance = 'reference' | 'very_suitable' | 'suitable';
4522
+ /** A treatment recommended for a concern */
4523
+ interface ConcernTreatment {
4524
+ /** Optional link to existing technology document */
4525
+ technologyId?: string;
4526
+ /** Display name */
4527
+ name: LocalizedString;
4528
+ /** Short description of how it helps */
4529
+ description: LocalizedString;
4530
+ /** How relevant this treatment is for the concern */
4531
+ relevance: TreatmentRelevance;
4532
+ /** Treatment category label (e.g. "Technologie", "Injectable", "Procédure") */
4533
+ type: LocalizedString;
4534
+ /** Info chips (duration, recovery, etc.) */
4535
+ tags: LocalizedString[];
4536
+ /** Display order within the concern */
4537
+ sortOrder: number;
4538
+ }
4539
+ /** A patient-facing aesthetic concern */
4540
+ interface Concern {
4541
+ id: string;
4542
+ /** URL-friendly identifier */
4543
+ slug: string;
4544
+ /** Display name */
4545
+ name: LocalizedString;
4546
+ /** One-liner shown on the card in the list view */
4547
+ shortDescription: LocalizedString;
4548
+ /** Full description shown at top of detail page */
4549
+ longDescription: LocalizedString;
4550
+ /** Educational "Comprendre" section content */
4551
+ explanation: LocalizedString;
4552
+ /** Icon identifier or image URL */
4553
+ icon: string;
4554
+ /** Optional hero image URL */
4555
+ image?: string;
4556
+ /** Recommended treatments, ordered by relevance */
4557
+ treatments: ConcernTreatment[];
4558
+ /** Denormalized count for list view */
4559
+ treatmentCount: number;
4560
+ /** Display order in the list */
4561
+ sortOrder: number;
4562
+ /** Whether this concern is visible to patients */
4563
+ isActive: boolean;
4564
+ /** Firestore timestamps */
4565
+ createdAt?: any;
4566
+ updatedAt?: any;
4567
+ }
4568
+ /** Firestore collection path */
4569
+ declare const CONCERNS_COLLECTION = "concerns";
4570
+
4571
+ /**
4572
+ * Dynamic Plan Configuration — stored in Firestore at `system/planConfig`.
4573
+ * Editable from the admin dashboard. Hardcoded defaults in tiers.config.ts
4574
+ * serve as fallback when the Firestore document doesn't exist.
4575
+ */
4576
+ interface TierDefinition {
4577
+ name: string;
4578
+ limits: {
4579
+ maxProvidersPerBranch: number;
4580
+ maxProceduresPerProvider: number;
4581
+ maxBranches: number;
4582
+ };
4583
+ }
4584
+ interface PlanDefinition {
4585
+ /** Stripe price ID. null for the free plan. */
4586
+ priceId: string | null;
4587
+ /** Monthly price in the plan currency (e.g. 199 for CHF 199). */
4588
+ priceMonthly: number;
4589
+ currency: string;
4590
+ description: string;
4591
+ /** Stripe product ID — needed when auto-creating new prices. */
4592
+ stripeProductId?: string | null;
4593
+ }
4594
+ interface SeatAddonDefinition {
4595
+ priceId: string;
4596
+ pricePerUnit: number;
4597
+ currency: string;
4598
+ allowedTiers: string[];
4599
+ }
4600
+ interface BranchAddonTierPrice {
4601
+ priceId: string;
4602
+ pricePerUnit: number;
4603
+ currency: string;
4604
+ }
4605
+ interface BranchAddonDefinition {
4606
+ connect: BranchAddonTierPrice;
4607
+ pro: BranchAddonTierPrice;
4608
+ allowedTiers: string[];
4609
+ }
4610
+ interface ProcedureAddonDefinition {
4611
+ priceId: string;
4612
+ pricePerBlock: number;
4613
+ proceduresPerBlock: number;
4614
+ currency: string;
4615
+ allowedTiers: string[];
4616
+ }
4617
+ interface PlanConfigDocument {
4618
+ version: number;
4619
+ updatedAt: any;
4620
+ updatedBy: string;
4621
+ /** Tier definitions with usage limits. Keys: 'free', 'connect', 'pro'. */
4622
+ tiers: Record<string, TierDefinition>;
4623
+ /** Plan pricing and Stripe config. Keys: 'FREE', 'CONNECT', 'PRO'. */
4624
+ plans: Record<string, PlanDefinition>;
4625
+ /** Add-on pricing and Stripe config. */
4626
+ addons: {
4627
+ seat: SeatAddonDefinition;
4628
+ branch: BranchAddonDefinition;
4629
+ procedure: ProcedureAddonDefinition;
4630
+ };
4631
+ /** Auto-computed: maps Stripe priceId → Firestore subscriptionModel ('connect'/'pro'). */
4632
+ priceToModel: Record<string, string>;
4633
+ /** Auto-computed: maps Stripe priceId → plan type label ('CONNECT'/'PRO'). */
4634
+ priceToType: Record<string, string>;
4635
+ /** Auto-computed: all add-on price IDs for webhook filtering. */
4636
+ addonPriceIds: string[];
4637
+ }
4638
+ /** Firestore path for the plan config document. */
4639
+ declare const PLAN_CONFIG_PATH = "system/planConfig";
4640
+ /** Firestore subcollection path for version history. */
4641
+ declare const PLAN_CONFIG_HISTORY_PATH = "system/planConfig/history";
4642
+
4510
4643
  /**
4511
4644
  * Base metrics interface with common properties
4512
4645
  */
@@ -5509,10 +5642,17 @@ interface ProcedureSummaryInfo {
5509
5642
  declare enum ClinicRole {
5510
5643
  OWNER = "owner",
5511
5644
  ADMIN = "admin",
5512
- DOCTOR = "doctor",
5513
5645
  RECEPTIONIST = "receptionist",
5514
5646
  ASSISTANT = "assistant"
5515
5647
  }
5648
+ /**
5649
+ * Display info denormalized onto a staff record for fast list rendering.
5650
+ */
5651
+ interface StaffDisplayInfo {
5652
+ firstName: string;
5653
+ lastName: string;
5654
+ email: string;
5655
+ }
5516
5656
  /**
5517
5657
  * Represents a staff member within a clinic group
5518
5658
  */
@@ -5524,6 +5664,8 @@ interface ClinicStaffMember {
5524
5664
  role: ClinicRole;
5525
5665
  permissions: Record<string, boolean>;
5526
5666
  isActive: boolean;
5667
+ displayInfo?: StaffDisplayInfo;
5668
+ invitedBy?: string;
5527
5669
  createdAt?: Timestamp;
5528
5670
  updatedAt?: Timestamp;
5529
5671
  }
@@ -5535,6 +5677,29 @@ interface RolePermissionConfig {
5535
5677
  role: ClinicRole;
5536
5678
  permissions: Record<string, boolean>;
5537
5679
  }
5680
+ /**
5681
+ * Status of a staff invitation
5682
+ */
5683
+ declare enum StaffInviteStatus {
5684
+ PENDING = "pending",
5685
+ ACCEPTED = "accepted",
5686
+ EXPIRED = "expired",
5687
+ CANCELLED = "cancelled"
5688
+ }
5689
+ /**
5690
+ * An invitation for a new staff member to join a clinic group
5691
+ */
5692
+ interface ClinicStaffInvite {
5693
+ id: string;
5694
+ email: string;
5695
+ clinicGroupId: string;
5696
+ role: ClinicRole;
5697
+ token: string;
5698
+ status: StaffInviteStatus;
5699
+ invitedBy: string;
5700
+ createdAt?: Timestamp;
5701
+ expiresAt?: Timestamp;
5702
+ }
5538
5703
  /**
5539
5704
  * Usage limits for a given subscription tier.
5540
5705
  * All features are available on every tier — only usage is capped.
@@ -5655,6 +5820,8 @@ interface ClinicAdmin {
5655
5820
  clinicsManagedInfo: ClinicInfo[];
5656
5821
  contactInfo: ContactPerson;
5657
5822
  roleTitle: string;
5823
+ role?: ClinicRole;
5824
+ permissions?: Record<string, boolean>;
5658
5825
  createdAt: Timestamp;
5659
5826
  updatedAt: Timestamp;
5660
5827
  isActive: boolean;
@@ -5670,6 +5837,8 @@ interface CreateClinicAdminData {
5670
5837
  clinicsManagedInfo?: ClinicInfo[];
5671
5838
  contactInfo: ContactPerson;
5672
5839
  roleTitle: string;
5840
+ role?: ClinicRole;
5841
+ permissions?: Record<string, boolean>;
5673
5842
  isActive: boolean;
5674
5843
  }
5675
5844
  /**
@@ -5696,6 +5865,7 @@ interface AdminToken {
5696
5865
  email?: string | null;
5697
5866
  status: AdminTokenStatus;
5698
5867
  usedByUserRef?: string;
5868
+ clinicGroupId: string;
5699
5869
  createdAt: Timestamp;
5700
5870
  expiresAt: Timestamp;
5701
5871
  }
@@ -5834,7 +6004,8 @@ interface ClinicGroup {
5834
6004
  clinicsInfo: ClinicInfo[];
5835
6005
  admins: string[];
5836
6006
  adminsInfo: AdminInfo[];
5837
- adminTokens: AdminToken[];
6007
+ /** @deprecated Tokens now stored in subcollection clinic_groups/{id}/adminTokens */
6008
+ adminTokens?: AdminToken[];
5838
6009
  ownerId: string | null;
5839
6010
  createdAt: Timestamp;
5840
6011
  updatedAt: Timestamp;
@@ -7136,6 +7307,18 @@ declare class ClinicGroupService extends BaseService {
7136
7307
  * Dohvata aktivne admin tokene
7137
7308
  */
7138
7309
  getActiveAdminTokens(groupId: string, adminId: string): Promise<AdminToken[]>;
7310
+ /**
7311
+ * Gets ALL admin tokens for a clinic group (all statuses)
7312
+ */
7313
+ getAllAdminTokens(groupId: string, adminId: string): Promise<AdminToken[]>;
7314
+ /**
7315
+ * Finds an admin token by its value across all clinic groups.
7316
+ * Uses a collection group query for O(1) lookup.
7317
+ */
7318
+ findAdminTokenByValue(tokenValue: string): Promise<{
7319
+ token: AdminToken;
7320
+ clinicGroupId: string;
7321
+ } | null>;
7139
7322
  /**
7140
7323
  * Updates the onboarding status for a clinic group
7141
7324
  *
@@ -9930,6 +10113,11 @@ declare class ResourceService extends BaseService {
9930
10113
  * Soft deletes a resource by setting status to INACTIVE
9931
10114
  */
9932
10115
  deleteResource(clinicBranchId: string, resourceId: string): Promise<void>;
10116
+ /**
10117
+ * Hard deletes a specific instance and all its calendar events.
10118
+ * Only works on INACTIVE instances with no future bookings.
10119
+ */
10120
+ hardDeleteInstance(clinicBranchId: string, resourceId: string, instanceId: string): Promise<void>;
9933
10121
  /**
9934
10122
  * Gets all instances for a resource
9935
10123
  */
@@ -10091,15 +10279,28 @@ declare const getFirebaseFunctions: () => Promise<Functions>;
10091
10279
  /**
10092
10280
  * Permission keys used for role-based access control.
10093
10281
  * Every feature is available on every tier — these only control
10094
- * what a given role (owner/admin/doctor/etc.) can do.
10282
+ * what a given role (owner/admin/receptionist/assistant) can do.
10283
+ * New roles can be added by extending the ClinicRole enum and adding
10284
+ * a corresponding entry here.
10285
+ *
10286
+ * v2 (2026-03-31): Expanded from 23 to 40 permissions.
10287
+ * - providers.manage → providers.create, providers.invite, providers.edit
10288
+ * - staff.manage → staff.view, staff.edit, staff.invite, staff.delete, staff.viewTokens, staff.deleteTokens
10289
+ * - Added: clinic.create, calendar.addEvent, calendar.editEvent, calendar.deleteEvent,
10290
+ * appointments.reschedule, patients.viewDetails, patients.create, patients.manageTokens, billing.view
10095
10291
  */
10096
10292
  declare const PERMISSION_KEYS: {
10097
10293
  readonly 'clinic.view': true;
10098
10294
  readonly 'clinic.edit': true;
10295
+ readonly 'clinic.create': true;
10099
10296
  readonly 'reviews.view': true;
10100
10297
  readonly 'calendar.view': true;
10298
+ readonly 'calendar.addEvent': true;
10299
+ readonly 'calendar.editEvent': true;
10300
+ readonly 'calendar.deleteEvent': true;
10101
10301
  readonly 'appointments.view': true;
10102
10302
  readonly 'appointments.confirm': true;
10303
+ readonly 'appointments.reschedule': true;
10103
10304
  readonly 'appointments.cancel': true;
10104
10305
  readonly messaging: true;
10105
10306
  readonly 'procedures.view': true;
@@ -10111,12 +10312,23 @@ declare const PERMISSION_KEYS: {
10111
10312
  readonly 'resources.edit': true;
10112
10313
  readonly 'resources.delete': true;
10113
10314
  readonly 'patients.view': true;
10315
+ readonly 'patients.viewDetails': true;
10316
+ readonly 'patients.create': true;
10114
10317
  readonly 'patients.edit': true;
10318
+ readonly 'patients.manageTokens': true;
10115
10319
  readonly 'providers.view': true;
10116
- readonly 'providers.manage': true;
10320
+ readonly 'providers.create': true;
10321
+ readonly 'providers.invite': true;
10322
+ readonly 'providers.edit': true;
10117
10323
  readonly 'analytics.view': true;
10118
- readonly 'staff.manage': true;
10324
+ readonly 'staff.view': true;
10325
+ readonly 'staff.edit': true;
10326
+ readonly 'staff.invite': true;
10327
+ readonly 'staff.delete': true;
10328
+ readonly 'staff.viewTokens': true;
10329
+ readonly 'staff.deleteTokens': true;
10119
10330
  readonly 'settings.manage': true;
10331
+ readonly 'billing.view': true;
10120
10332
  readonly 'billing.manage': true;
10121
10333
  };
10122
10334
  type PermissionKey = keyof typeof PERMISSION_KEYS;
@@ -10141,9 +10353,27 @@ declare const TIER_CONFIG: Record<string, TierConfig>;
10141
10353
  * These are the baseline permissions for each role; owners can override per-user.
10142
10354
  */
10143
10355
  declare const DEFAULT_ROLE_PERMISSIONS: Record<ClinicRole, Record<string, boolean>>;
10356
+ /**
10357
+ * Default PlanConfigDocument — used as fallback when Firestore `system/planConfig`
10358
+ * doesn't exist or is unavailable. Also used as the seed value.
10359
+ *
10360
+ * Stripe price IDs reference the SKS Innovation SA sandbox account.
10361
+ */
10362
+ declare const DEFAULT_PLAN_CONFIG: PlanConfigDocument;
10363
+ /**
10364
+ * Human-readable labels and grouping for permission keys.
10365
+ * Used by the staff management UI for role/permission display.
10366
+ */
10367
+ declare const PERMISSION_LABELS: Record<string, {
10368
+ label: string;
10369
+ description: string;
10370
+ category: string;
10371
+ }>;
10372
+ /** All unique permission categories in display order. */
10373
+ declare const PERMISSION_CATEGORIES: readonly ["Clinic", "Calendar", "Appointments", "Messaging", "Procedures", "Resources", "Patients", "Providers", "Analytics", "Staff Management", "Administration"];
10144
10374
  /**
10145
10375
  * Resolves the effective tier for a subscription model string.
10146
10376
  */
10147
10377
  declare function resolveEffectiveTier(subscriptionModel: string): string;
10148
10378
 
10149
- export { AESTHETIC_ANALYSIS_COLLECTION, ANALYTICS_COLLECTION, APPOINTMENTS_COLLECTION, type ASAClassification, AcquisitionSource, 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, AnalyticsCloudService, type AnalyticsDateRange, type AnalyticsFilters, type AnalyticsMetadata, type AnalyticsPeriod, AnalyticsService, type AnesthesiaHistory, type Appointment, type AppointmentCancelledNotification, type AppointmentMediaItem, type AppointmentMetadata, type AppointmentProductMetadata, type AppointmentReminderNotification, type AppointmentRescheduledProposalNotification, type AppointmentRescheduledReminderNotification, AppointmentService, AppointmentStatus, type AppointmentStatusChangeNotification, type AppointmentTrend, type AssessmentScales, AuthService, BODY_ASSESSMENT_COLLECTION, type BaseDocumentElement, type BaseMetrics, type BaseNotification, BaseService, type BeforeAfterPerZone, type BillingInfo, type BillingPerZone, type BillingTransaction, BillingTransactionType, BillingTransactionsService, type BinaryChoiceElement, type BleedingRisk, type BleedingRiskLevel, BlockingCondition, type BodyAssessment, type BodyAssessmentStatus, type BodyCompositionData, type BodyMeasurementsData, type BodySymmetryData, type BodyZone, type BodyZoneAssessment, type Brand, BrandService, type Break, CALENDAR_COLLECTION, CANCELLATION_ANALYTICS_SUBCOLLECTION, CLINICS_COLLECTION, CLINIC_ADMINS_COLLECTION, CLINIC_ANALYTICS_SUBCOLLECTION, CLINIC_GROUPS_COLLECTION, type CalendarEvent, CalendarEventStatus, type CalendarEventTime, CalendarEventType, CalendarServiceV2, CalendarServiceV3, CalendarSyncStatus, type CancellationMetrics, type CancellationRateTrend, type CancellationReasonStats, type Category, CategoryService, CertificationLevel, CertificationSpecialty, type ClearanceStatus, type Clinic, type ClinicAdmin, ClinicAdminService, type ClinicAdminSignupData, type ClinicAnalytics, type ClinicBranchSetupData, type ClinicComparisonMetrics, type ClinicContactInfo, type ClinicGroup, ClinicGroupService, type ClinicGroupSetupData, type ClinicInfo, type ClinicLocation, ClinicPhotoTag, type ClinicReview, type ClinicReviewInfo, ClinicRole, ClinicService, type ClinicStaffMember, ClinicTag, type ClinicTags, type ClinicalFindingDetail, type ClinicalFindings, ConstantsService, type ContactPerson, Contraindication, type ContraindicationDynamic, CosmeticAllergySubtype, type CostPerPatientMetrics, type CreateAdminTokenData, type CreateAestheticAnalysisData, type CreateAppointmentData, type CreateAppointmentHttpData, type CreateAppointmentParams, type CreateBillingTransactionData, type CreateBlockingEventParams, type CreateBodyAssessmentData, type CreateCalendarEventData, type CreateClinicAdminData, type CreateClinicData, type CreateClinicGroupData, type CreateDefaultClinicGroupData, type CreateDocumentTemplateData, type CreateDraftPractitionerData, type CreateHairScalpAssessmentData, type CreateManualPatientData, type CreatePatientLocationInfoData, type CreatePatientMedicalInfoData, type CreatePatientProfileData, type CreatePatientSensitiveInfoData, type CreatePatientTokenData, type CreatePractitionerData, type CreatePractitionerInviteData, type CreatePractitionerTokenData, type CreatePreSurgicalAssessmentData, type CreateProcedureData, type CreateResourceBlockingEventParams, type CreateResourceData, type CreateSkinQualityAssessmentData, type CreateSyncedCalendarData, type CreateUserData, Currency, DASHBOARD_ANALYTICS_SUBCOLLECTION, DEFAULT_MEDICAL_INFO, DEFAULT_ROLE_PERMISSIONS, DOCTOR_FORMS_SUBCOLLECTION, DOCUMENTATION_TEMPLATES_COLLECTION, type DashboardAnalytics, type DatePickerElement, type DateRange, type DigitalSignatureElement, type DoctorInfo, type DocumentElement, DocumentElementType, type DocumentTemplate, DocumentationTemplateService, type DurationTrend, type DynamicTextElement, DynamicVariable, type ElastosisGrade, type EmergencyContact, type EntityType, EnvironmentalAllergySubtype, type ExtendedProcedureInfo, ExternalCalendarService, FILLED_DOCUMENTS_COLLECTION, type FileUploadElement, type FilledDocument, type FilledDocumentFileValue, FilledDocumentService, FilledDocumentStatus, type FinalBilling, type FirebaseUser, type FitzpatrickType, FoodAllergySubtype, type FormReminderNotification, type FormSubmissionConfirmationNotification, type GamificationInfo, Gender, type GeneralMessageNotification, type GlogauClassification, type GroupedAnalyticsBase, type GroupedPatientBehaviorMetrics, type GroupedPatientRetentionMetrics, type GroupedPractitionerPerformanceMetrics, type GroupedProcedurePerformanceMetrics, type GroupedProductUsageMetrics, type GroupedRevenueMetrics, type GroupedTimeEfficiencyMetrics, type GroupingPeriod, HAIR_SCALP_ASSESSMENT_COLLECTION, type HairCharacteristics, type HairColor, type HairDensity, type HairLossPattern, type HairLossType, type HairLossZone, type HairLossZoneAssessment, type HairScalpAssessment, type HairScalpAssessmentStatus, type HairTextureGrade, type HairType, type HeadingElement, HeadingLevel, INVITE_TOKENS_COLLECTION, type LabResult, Language, type LinkedFormInfo, type ListElement, ListType, type LocationData, type LudwigStage, MEDIA_METADATA_COLLECTION, MediaAccessLevel, type MediaMetadata, type MediaResource, MediaService, MediaType, MedicationAllergySubtype, type MultipleChoiceElement, type MuscleDefinitionLevel, NOTIFICATIONS_COLLECTION, NO_SHOW_ANALYTICS_SUBCOLLECTION, type NextStepsRecommendation, type NoShowMetrics, type NorwoodStage, type Notification, NotificationService, NotificationStatus, NotificationType, type OverallReviewAverages, 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, PERMISSION_KEYS, PRACTITIONERS_COLLECTION, PRACTITIONER_ANALYTICS_SUBCOLLECTION, PRACTITIONER_INVITES_COLLECTION, PRE_SURGICAL_ASSESSMENT_COLLECTION, PROCEDURES_COLLECTION, PROCEDURE_ANALYTICS_SUBCOLLECTION, type ParagraphElement, type PatientAnalytics, type PatientClinic, type PatientDoctor, type PatientGoals, PatientInstructionStatus, type PatientLifetimeValueMetrics, type PatientLocationInfo, type PatientMedicalInfo, type PatientProfile, type PatientProfileComplete, type PatientProfileForDoctor, type PatientProfileInfo, type PatientRequirementInstance, type PatientRequirementInstruction, PatientRequirementOverallStatus, type PatientRequirementsFilters, PatientRequirementsService, type PatientRetentionMetrics, type PatientReviewInfo, type PatientSensitiveInfo, PatientService, type PatientToken, PatientTokenStatus, type PaymentConfirmationNotification, PaymentStatus, type PaymentStatusBreakdown, type PermissionKey, type PlanDetails, type PoreSizeLevel, type PostRequirementNotification, PracticeType, type Practitioner, type PractitionerAnalytics, 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, type PreSurgicalAssessment, type PreSurgicalAssessmentStatus, PricingMeasure, type Procedure, type ProcedureAnalytics, type ProcedureCategorization, type ProcedureExtendedInfo, ProcedureFamily, type ProcedureInfo, type ProcedurePopularity, type ProcedureProduct, type ProcedureProfitability, type ProcedureRecommendationNotification, type ProcedureReview, type ProcedureReviewInfo, ProcedureService, type ProcedureSummaryInfo, type Product, type ProductRevenueMetrics, ProductService, type ProductUsageByProcedure, type ProductUsageMetrics, type ProposedWorkingHours, REGISTER_TOKENS_COLLECTION, RESOURCES_COLLECTION, RESOURCE_CALENDAR_SUBCOLLECTION, RESOURCE_INSTANCES_SUBCOLLECTION, REVENUE_ANALYTICS_SUBCOLLECTION, REVIEWS_COLLECTION, type RatingScaleElement, type ReadStoredAnalyticsOptions, type RecommendedProcedure, type RequesterInfo, type Requirement, type RequirementInstructionDueNotification, type RequirementSourceProcedure, RequirementType, type Resource, type ResourceBookingInfo, type ResourceCalendarEvent, ResourceCategory, type ResourceInstance, type ResourceRequirement, ResourceService, ResourceStatus, type RevenueMetrics, type RevenueTrend, type Review, type ReviewAnalyticsMetrics, ReviewAnalyticsService, type ReviewDetail, type ReviewMetrics, type ReviewRequestNotification, ReviewService, type ReviewTrend, type RolePermissionConfig, SKIN_QUALITY_ASSESSMENT_COLLECTION, SYNCED_CALENDARS_COLLECTION, type ScalpCondition, type ScalpRednessLevel, type ScalpScalinessLevel, type ScalpSebumLevel, type SearchAppointmentsParams, type SearchCalendarEventsParams, SearchLocationEnum, type SearchPatientsParams, type SeverityLevel, type SignatureElement, type SingleChoiceElement, type SkinCharacteristics, type SkinConditionEntry, type SkinConditionType, type SkinElasticityLevel, type SkinHydrationLevel, type SkinQualityAssessment, type SkinQualityAssessmentStatus, type SkinQualityScales, type SkinSensitivityLevel, type SkinTextureLevel, type SkinZone, type SkinZoneAssessment, type SmokingStatus, type StoredCancellationMetrics, type StoredClinicAnalytics, type StoredDashboardAnalytics, type StoredNoShowMetrics, type StoredPractitionerAnalytics, type StoredProcedureAnalytics, type StoredRevenueMetrics, type StoredTimeEfficiencyMetrics, type StripeTransactionData, type Subcategory, SubcategoryService, SubscriptionModel, SubscriptionStatus, type SurgicalSiteAssessment, type SyncedCalendar, type SyncedCalendarEvent, SyncedCalendarProvider, SyncedCalendarsService, TIER_CONFIG, TIME_EFFICIENCY_ANALYTICS_SUBCOLLECTION, type Technology, type TechnologyDocumentationTemplate, TechnologyService, type TextInputElement, type TierConfig, TierLimitError, type TierLimits, type TimeEfficiencyMetrics, type TimeSlot, TimeUnit, type TissueQualityLevel, TreatmentBenefit, type TreatmentBenefitDynamic, type TrendPeriod, USERS_COLLECTION, USER_FORMS_SUBCOLLECTION, type UpdateAestheticAnalysisData, type UpdateAllergyData, type UpdateAppointmentData, type UpdateAppointmentParams, type UpdateBlockingConditionData, type UpdateBlockingEventParams, type UpdateBodyAssessmentData, type UpdateCalendarEventData, type UpdateClinicAdminData, type UpdateClinicData, type UpdateClinicGroupData, type UpdateContraindicationData, type UpdateDocumentTemplateData, type UpdateHairScalpAssessmentData, type UpdateMedicationData, type UpdatePatientLocationInfoData, type UpdatePatientMedicalInfoData, type UpdatePatientProfileData, type UpdatePatientSensitiveInfoData, type UpdatePractitionerData, type UpdatePractitionerInviteData, type UpdatePreSurgicalAssessmentData, type UpdateProcedureData, type UpdateResourceBlockingEventParams, type UpdateResourceData, type UpdateSkinQualityAssessmentData, type UpdateSyncedCalendarData, type UpdateVitalStatsData, type User, UserRole, UserService, type VitalStats, type WorkingHours, type ZoneItemData, type ZonePhotoUploadData, enforceBranchLimit, enforceProcedureLimit, enforceProviderLimit, getEffectiveTier, getFirebaseApp, getFirebaseAuth, getFirebaseDB, getFirebaseFunctions, getFirebaseInstance, getFirebaseStorage, initializeFirebase, resolveEffectiveTier };
10379
+ export { AESTHETIC_ANALYSIS_COLLECTION, ANALYTICS_COLLECTION, APPOINTMENTS_COLLECTION, type ASAClassification, AcquisitionSource, 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, AnalyticsCloudService, type AnalyticsDateRange, type AnalyticsFilters, type AnalyticsMetadata, type AnalyticsPeriod, AnalyticsService, type AnesthesiaHistory, type Appointment, type AppointmentCancelledNotification, type AppointmentMediaItem, type AppointmentMetadata, type AppointmentProductMetadata, type AppointmentReminderNotification, type AppointmentRescheduledProposalNotification, type AppointmentRescheduledReminderNotification, AppointmentService, AppointmentStatus, type AppointmentStatusChangeNotification, type AppointmentTrend, type AssessmentScales, AuthService, BODY_ASSESSMENT_COLLECTION, type BaseDocumentElement, type BaseMetrics, type BaseNotification, BaseService, type BeforeAfterPerZone, type BillingInfo, type BillingPerZone, type BillingTransaction, BillingTransactionType, BillingTransactionsService, type BinaryChoiceElement, type BleedingRisk, type BleedingRiskLevel, BlockingCondition, type BodyAssessment, type BodyAssessmentStatus, type BodyCompositionData, type BodyMeasurementsData, type BodySymmetryData, type BodyZone, type BodyZoneAssessment, type BranchAddonDefinition, type BranchAddonTierPrice, type Brand, BrandService, type Break, CALENDAR_COLLECTION, CANCELLATION_ANALYTICS_SUBCOLLECTION, CLINICS_COLLECTION, CLINIC_ADMINS_COLLECTION, CLINIC_ANALYTICS_SUBCOLLECTION, CLINIC_GROUPS_COLLECTION, CONCERNS_COLLECTION, type CalendarEvent, CalendarEventStatus, type CalendarEventTime, CalendarEventType, CalendarServiceV2, CalendarServiceV3, CalendarSyncStatus, type CancellationMetrics, type CancellationRateTrend, type CancellationReasonStats, type Category, CategoryService, CertificationLevel, CertificationSpecialty, type ClearanceStatus, type Clinic, type ClinicAdmin, ClinicAdminService, type ClinicAdminSignupData, type ClinicAnalytics, type ClinicBranchSetupData, type ClinicComparisonMetrics, type ClinicContactInfo, type ClinicGroup, ClinicGroupService, type ClinicGroupSetupData, type ClinicInfo, type ClinicLocation, ClinicPhotoTag, type ClinicReview, type ClinicReviewInfo, ClinicRole, ClinicService, type ClinicStaffInvite, type ClinicStaffMember, ClinicTag, type ClinicTags, type ClinicalFindingDetail, type ClinicalFindings, type Concern, type ConcernTreatment, ConstantsService, type ContactPerson, Contraindication, type ContraindicationDynamic, CosmeticAllergySubtype, type CostPerPatientMetrics, type CreateAdminTokenData, type CreateAestheticAnalysisData, type CreateAppointmentData, type CreateAppointmentHttpData, type CreateAppointmentParams, type CreateBillingTransactionData, type CreateBlockingEventParams, type CreateBodyAssessmentData, type CreateCalendarEventData, type CreateClinicAdminData, type CreateClinicData, type CreateClinicGroupData, type CreateDefaultClinicGroupData, type CreateDocumentTemplateData, type CreateDraftPractitionerData, type CreateHairScalpAssessmentData, type CreateManualPatientData, type CreatePatientLocationInfoData, type CreatePatientMedicalInfoData, type CreatePatientProfileData, type CreatePatientSensitiveInfoData, type CreatePatientTokenData, type CreatePractitionerData, type CreatePractitionerInviteData, type CreatePractitionerTokenData, type CreatePreSurgicalAssessmentData, type CreateProcedureData, type CreateResourceBlockingEventParams, type CreateResourceData, type CreateSkinQualityAssessmentData, type CreateSyncedCalendarData, type CreateUserData, Currency, DASHBOARD_ANALYTICS_SUBCOLLECTION, DEFAULT_MEDICAL_INFO, DEFAULT_PLAN_CONFIG, DEFAULT_ROLE_PERMISSIONS, DOCTOR_FORMS_SUBCOLLECTION, DOCUMENTATION_TEMPLATES_COLLECTION, type DashboardAnalytics, type DatePickerElement, type DateRange, type DigitalSignatureElement, type DoctorInfo, type DocumentElement, DocumentElementType, type DocumentTemplate, DocumentationTemplateService, type DurationTrend, type DynamicTextElement, DynamicVariable, type ElastosisGrade, type EmergencyContact, type EntityType, EnvironmentalAllergySubtype, type ExtendedProcedureInfo, ExternalCalendarService, FILLED_DOCUMENTS_COLLECTION, type FileUploadElement, type FilledDocument, type FilledDocumentFileValue, FilledDocumentService, FilledDocumentStatus, type FinalBilling, type FirebaseUser, type FitzpatrickType, FoodAllergySubtype, type FormReminderNotification, type FormSubmissionConfirmationNotification, type GamificationInfo, Gender, type GeneralMessageNotification, type GlogauClassification, type GroupedAnalyticsBase, type GroupedPatientBehaviorMetrics, type GroupedPatientRetentionMetrics, type GroupedPractitionerPerformanceMetrics, type GroupedProcedurePerformanceMetrics, type GroupedProductUsageMetrics, type GroupedRevenueMetrics, type GroupedTimeEfficiencyMetrics, type GroupingPeriod, HAIR_SCALP_ASSESSMENT_COLLECTION, type HairCharacteristics, type HairColor, type HairDensity, type HairLossPattern, type HairLossType, type HairLossZone, type HairLossZoneAssessment, type HairScalpAssessment, type HairScalpAssessmentStatus, type HairTextureGrade, type HairType, type HeadingElement, HeadingLevel, INVITE_TOKENS_COLLECTION, type LabResult, Language, type LinkedFormInfo, type ListElement, ListType, type LocalizedString, type LocationData, type LudwigStage, MEDIA_METADATA_COLLECTION, MediaAccessLevel, type MediaMetadata, type MediaResource, MediaService, MediaType, MedicationAllergySubtype, type MultipleChoiceElement, type MuscleDefinitionLevel, NOTIFICATIONS_COLLECTION, NO_SHOW_ANALYTICS_SUBCOLLECTION, type NextStepsRecommendation, type NoShowMetrics, type NorwoodStage, type Notification, NotificationService, NotificationStatus, NotificationType, type OverallReviewAverages, 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, PERMISSION_CATEGORIES, PERMISSION_KEYS, PERMISSION_LABELS, PLAN_CONFIG_HISTORY_PATH, PLAN_CONFIG_PATH, PRACTITIONERS_COLLECTION, PRACTITIONER_ANALYTICS_SUBCOLLECTION, PRACTITIONER_INVITES_COLLECTION, PRE_SURGICAL_ASSESSMENT_COLLECTION, PROCEDURES_COLLECTION, PROCEDURE_ANALYTICS_SUBCOLLECTION, type ParagraphElement, type PatientAnalytics, type PatientClinic, type PatientDoctor, type PatientGoals, PatientInstructionStatus, type PatientLifetimeValueMetrics, type PatientLocationInfo, type PatientMedicalInfo, type PatientProfile, type PatientProfileComplete, type PatientProfileForDoctor, type PatientProfileInfo, type PatientRequirementInstance, type PatientRequirementInstruction, PatientRequirementOverallStatus, type PatientRequirementsFilters, PatientRequirementsService, type PatientRetentionMetrics, type PatientReviewInfo, type PatientSensitiveInfo, PatientService, type PatientToken, PatientTokenStatus, type PaymentConfirmationNotification, PaymentStatus, type PaymentStatusBreakdown, type PermissionKey, type PlanConfigDocument, type PlanDefinition, type PlanDetails, type PoreSizeLevel, type PostRequirementNotification, PracticeType, type Practitioner, type PractitionerAnalytics, 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, type PreSurgicalAssessment, type PreSurgicalAssessmentStatus, PricingMeasure, type Procedure, type ProcedureAddonDefinition, type ProcedureAnalytics, type ProcedureCategorization, type ProcedureExtendedInfo, ProcedureFamily, type ProcedureInfo, type ProcedurePopularity, type ProcedureProduct, type ProcedureProfitability, type ProcedureRecommendationNotification, type ProcedureReview, type ProcedureReviewInfo, ProcedureService, type ProcedureSummaryInfo, type Product, type ProductRevenueMetrics, ProductService, type ProductUsageByProcedure, type ProductUsageMetrics, type ProposedWorkingHours, REGISTER_TOKENS_COLLECTION, RESOURCES_COLLECTION, RESOURCE_CALENDAR_SUBCOLLECTION, RESOURCE_INSTANCES_SUBCOLLECTION, REVENUE_ANALYTICS_SUBCOLLECTION, REVIEWS_COLLECTION, type RatingScaleElement, type ReadStoredAnalyticsOptions, type RecommendedProcedure, type RequesterInfo, type Requirement, type RequirementInstructionDueNotification, type RequirementSourceProcedure, RequirementType, type Resource, type ResourceBookingInfo, type ResourceCalendarEvent, ResourceCategory, type ResourceInstance, type ResourceRequirement, ResourceService, ResourceStatus, type RevenueMetrics, type RevenueTrend, type Review, type ReviewAnalyticsMetrics, ReviewAnalyticsService, type ReviewDetail, type ReviewMetrics, type ReviewRequestNotification, ReviewService, type ReviewTrend, type RolePermissionConfig, SKIN_QUALITY_ASSESSMENT_COLLECTION, SYNCED_CALENDARS_COLLECTION, type ScalpCondition, type ScalpRednessLevel, type ScalpScalinessLevel, type ScalpSebumLevel, type SearchAppointmentsParams, type SearchCalendarEventsParams, SearchLocationEnum, type SearchPatientsParams, type SeatAddonDefinition, type SeverityLevel, type SignatureElement, type SingleChoiceElement, type SkinCharacteristics, type SkinConditionEntry, type SkinConditionType, type SkinElasticityLevel, type SkinHydrationLevel, type SkinQualityAssessment, type SkinQualityAssessmentStatus, type SkinQualityScales, type SkinSensitivityLevel, type SkinTextureLevel, type SkinZone, type SkinZoneAssessment, type SmokingStatus, type StaffDisplayInfo, StaffInviteStatus, type StoredCancellationMetrics, type StoredClinicAnalytics, type StoredDashboardAnalytics, type StoredNoShowMetrics, type StoredPractitionerAnalytics, type StoredProcedureAnalytics, type StoredRevenueMetrics, type StoredTimeEfficiencyMetrics, type StripeTransactionData, type Subcategory, SubcategoryService, SubscriptionModel, SubscriptionStatus, type SupportedLanguage, type SurgicalSiteAssessment, type SyncedCalendar, type SyncedCalendarEvent, SyncedCalendarProvider, SyncedCalendarsService, TIER_CONFIG, TIME_EFFICIENCY_ANALYTICS_SUBCOLLECTION, type Technology, type TechnologyDocumentationTemplate, TechnologyService, type TextInputElement, type TierConfig, type TierDefinition, TierLimitError, type TierLimits, type TimeEfficiencyMetrics, type TimeSlot, TimeUnit, type TissueQualityLevel, TreatmentBenefit, type TreatmentBenefitDynamic, type TreatmentRelevance, type TrendPeriod, USERS_COLLECTION, USER_FORMS_SUBCOLLECTION, type UpdateAestheticAnalysisData, type UpdateAllergyData, type UpdateAppointmentData, type UpdateAppointmentParams, type UpdateBlockingConditionData, type UpdateBlockingEventParams, type UpdateBodyAssessmentData, type UpdateCalendarEventData, type UpdateClinicAdminData, type UpdateClinicData, type UpdateClinicGroupData, type UpdateContraindicationData, type UpdateDocumentTemplateData, type UpdateHairScalpAssessmentData, type UpdateMedicationData, type UpdatePatientLocationInfoData, type UpdatePatientMedicalInfoData, type UpdatePatientProfileData, type UpdatePatientSensitiveInfoData, type UpdatePractitionerData, type UpdatePractitionerInviteData, type UpdatePreSurgicalAssessmentData, type UpdateProcedureData, type UpdateResourceBlockingEventParams, type UpdateResourceData, type UpdateSkinQualityAssessmentData, type UpdateSyncedCalendarData, type UpdateVitalStatsData, type User, UserRole, UserService, type VitalStats, type WorkingHours, type ZoneItemData, type ZonePhotoUploadData, enforceBranchLimit, enforceProcedureLimit, enforceProviderLimit, getEffectiveTier, getFirebaseApp, getFirebaseAuth, getFirebaseDB, getFirebaseFunctions, getFirebaseInstance, getFirebaseStorage, initializeFirebase, resolveEffectiveTier };