@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.
- package/dist/admin/index.d.mts +3 -1
- package/dist/admin/index.d.ts +3 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/index.d.mts +236 -6
- package/dist/index.d.ts +236 -6
- package/dist/index.js +2095 -1787
- package/dist/index.mjs +1199 -898
- package/package.json +1 -1
- package/src/admin/aggregation/clinic/clinic.aggregation.service.ts +1 -1
- package/src/config/index.ts +3 -0
- package/src/config/tiers.config.ts +258 -39
- package/src/services/auth/auth.service.ts +16 -49
- package/src/services/clinic/clinic-group.service.ts +13 -6
- package/src/services/clinic/utils/clinic-group.utils.ts +110 -89
- package/src/services/plan-config.service.ts +55 -0
- package/src/services/resource/resource.service.ts +86 -17
- package/src/services/tier-enforcement.ts +15 -10
- package/src/types/clinic/index.ts +8 -1
- package/src/types/clinic/rbac.types.ts +36 -1
- package/src/types/concern/index.ts +66 -0
- package/src/types/index.ts +6 -0
- package/src/types/system/index.ts +1 -0
- package/src/types/system/planConfig.types.ts +86 -0
- package/src/validations/clinic.schema.ts +9 -3
package/dist/admin/index.d.mts
CHANGED
|
@@ -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
|
|
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;
|
package/dist/admin/index.d.ts
CHANGED
|
@@ -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
|
|
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;
|
package/dist/admin/index.js
CHANGED
|
@@ -4961,7 +4961,7 @@ var ClinicAggregationService = class {
|
|
|
4961
4961
|
try {
|
|
4962
4962
|
await groupRef.update({
|
|
4963
4963
|
clinicsInfo: admin8.firestore.FieldValue.arrayUnion(clinicInfo),
|
|
4964
|
-
|
|
4964
|
+
clinics: admin8.firestore.FieldValue.arrayUnion(clinicId),
|
|
4965
4965
|
updatedAt: admin8.firestore.FieldValue.serverTimestamp()
|
|
4966
4966
|
});
|
|
4967
4967
|
console.log(
|
package/dist/admin/index.mjs
CHANGED
|
@@ -4883,7 +4883,7 @@ var ClinicAggregationService = class {
|
|
|
4883
4883
|
try {
|
|
4884
4884
|
await groupRef.update({
|
|
4885
4885
|
clinicsInfo: admin8.firestore.FieldValue.arrayUnion(clinicInfo),
|
|
4886
|
-
|
|
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
|
|
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/
|
|
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.
|
|
10320
|
+
readonly 'providers.create': true;
|
|
10321
|
+
readonly 'providers.invite': true;
|
|
10322
|
+
readonly 'providers.edit': true;
|
|
10117
10323
|
readonly 'analytics.view': true;
|
|
10118
|
-
readonly 'staff.
|
|
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 };
|