@foxscheduling/shared 0.1.0

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.
Files changed (260) hide show
  1. package/README.md +56 -0
  2. package/dist/cjs/constants/emailUnsubscribeReasons.cjs +13 -0
  3. package/dist/cjs/constants/emailUnsubscribeReasons.d.ts +4 -0
  4. package/dist/cjs/constants/emailUnsubscribeReasons.d.ts.map +1 -0
  5. package/dist/cjs/index.cjs +24 -0
  6. package/dist/cjs/index.d.ts +9 -0
  7. package/dist/cjs/index.d.ts.map +1 -0
  8. package/dist/cjs/types/db.availability.cjs +12 -0
  9. package/dist/cjs/types/db.availability.d.ts +33 -0
  10. package/dist/cjs/types/db.availability.d.ts.map +1 -0
  11. package/dist/cjs/types/db.booking.cjs +2 -0
  12. package/dist/cjs/types/db.booking.d.ts +101 -0
  13. package/dist/cjs/types/db.booking.d.ts.map +1 -0
  14. package/dist/cjs/types/db.cjs +2 -0
  15. package/dist/cjs/types/db.customers.cjs +2 -0
  16. package/dist/cjs/types/db.customers.d.ts +14 -0
  17. package/dist/cjs/types/db.customers.d.ts.map +1 -0
  18. package/dist/cjs/types/db.d.ts +11 -0
  19. package/dist/cjs/types/db.d.ts.map +1 -0
  20. package/dist/cjs/types/db.directory.cjs +2 -0
  21. package/dist/cjs/types/db.directory.d.ts +38 -0
  22. package/dist/cjs/types/db.directory.d.ts.map +1 -0
  23. package/dist/cjs/types/db.emailFlow.cjs +2 -0
  24. package/dist/cjs/types/db.emailFlow.d.ts +29 -0
  25. package/dist/cjs/types/db.emailFlow.d.ts.map +1 -0
  26. package/dist/cjs/types/db.mcpUserContext.cjs +2 -0
  27. package/dist/cjs/types/db.mcpUserContext.d.ts +29 -0
  28. package/dist/cjs/types/db.mcpUserContext.d.ts.map +1 -0
  29. package/dist/cjs/types/db.notification.cjs +2 -0
  30. package/dist/cjs/types/db.notification.d.ts +27 -0
  31. package/dist/cjs/types/db.notification.d.ts.map +1 -0
  32. package/dist/cjs/types/db.oauth.cjs +2 -0
  33. package/dist/cjs/types/db.oauth.d.ts +55 -0
  34. package/dist/cjs/types/db.oauth.d.ts.map +1 -0
  35. package/dist/cjs/types/db.partnerApiKey.cjs +2 -0
  36. package/dist/cjs/types/db.partnerApiKey.d.ts +15 -0
  37. package/dist/cjs/types/db.partnerApiKey.d.ts.map +1 -0
  38. package/dist/cjs/types/db.paymentPending.cjs +2 -0
  39. package/dist/cjs/types/db.paymentPending.d.ts +16 -0
  40. package/dist/cjs/types/db.paymentPending.d.ts.map +1 -0
  41. package/dist/cjs/types/db.service.cjs +15 -0
  42. package/dist/cjs/types/db.service.d.ts +145 -0
  43. package/dist/cjs/types/db.service.d.ts.map +1 -0
  44. package/dist/cjs/types/db.tax.cjs +2 -0
  45. package/dist/cjs/types/db.tax.d.ts.map +1 -0
  46. package/dist/cjs/types/db.tenant.cjs +2 -0
  47. package/dist/cjs/types/db.tenant.d.ts +118 -0
  48. package/dist/cjs/types/db.tenant.d.ts.map +1 -0
  49. package/dist/cjs/types/db.tenantGroupedStat.cjs +2 -0
  50. package/dist/cjs/types/db.tenantGroupedStat.d.ts +13 -0
  51. package/dist/cjs/types/db.tenantGroupedStat.d.ts.map +1 -0
  52. package/dist/cjs/types/db.user.cjs +7 -0
  53. package/dist/cjs/types/db.user.d.ts +81 -0
  54. package/dist/cjs/types/db.user.d.ts.map +1 -0
  55. package/dist/cjs/types/db.userConfirmation.cjs +2 -0
  56. package/dist/cjs/types/db.userConfirmation.d.ts +17 -0
  57. package/dist/cjs/types/db.userConfirmation.d.ts.map +1 -0
  58. package/dist/cjs/types/db.userLoginSession.cjs +2 -0
  59. package/dist/cjs/types/db.userLoginSession.d.ts +28 -0
  60. package/dist/cjs/types/db.userLoginSession.d.ts.map +1 -0
  61. package/dist/cjs/types/db.webhook.cjs +10 -0
  62. package/dist/cjs/types/db.webhook.d.ts +16 -0
  63. package/dist/cjs/types/db.webhook.d.ts.map +1 -0
  64. package/dist/cjs/types/discover.cjs +2 -0
  65. package/dist/cjs/types/discover.d.ts +45 -0
  66. package/dist/cjs/types/discover.d.ts.map +1 -0
  67. package/dist/cjs/types/errorCodes.cjs +150 -0
  68. package/dist/cjs/types/errorCodes.d.ts +147 -0
  69. package/dist/cjs/types/errorCodes.d.ts.map +1 -0
  70. package/dist/cjs/types/index.cjs +44 -0
  71. package/dist/cjs/types/index.d.ts +84 -0
  72. package/dist/cjs/types/index.d.ts.map +1 -0
  73. package/dist/cjs/types/oauthScopes.cjs +33 -0
  74. package/dist/cjs/types/oauthScopes.d.ts +7 -0
  75. package/dist/cjs/types/oauthScopes.d.ts.map +1 -0
  76. package/dist/cjs/types/partnerDto.cjs +2 -0
  77. package/dist/cjs/types/partnerDto.d.ts +69 -0
  78. package/dist/cjs/types/partnerDto.d.ts.map +1 -0
  79. package/dist/cjs/types/pricing.cjs +2 -0
  80. package/dist/cjs/types/pricing.d.ts +31 -0
  81. package/dist/cjs/types/pricing.d.ts.map +1 -0
  82. package/dist/cjs/types/requestResponse.cjs +2 -0
  83. package/dist/cjs/types/requestResponse.d.ts +93 -0
  84. package/dist/cjs/types/requestResponse.d.ts.map +1 -0
  85. package/dist/cjs/types/subscription.cjs +2 -0
  86. package/dist/cjs/types/subscription.d.ts +50 -0
  87. package/dist/cjs/types/subscription.d.ts.map +1 -0
  88. package/dist/cjs/utils/bookingEmbed.cjs +178 -0
  89. package/dist/cjs/utils/bookingEmbed.d.ts +61 -0
  90. package/dist/cjs/utils/bookingEmbed.d.ts.map +1 -0
  91. package/dist/cjs/utils/bookingPageIcons.cjs +218 -0
  92. package/dist/cjs/utils/bookingPageIcons.d.ts +160 -0
  93. package/dist/cjs/utils/bookingPageIcons.d.ts.map +1 -0
  94. package/dist/cjs/utils/bookingProviders.cjs +27 -0
  95. package/dist/cjs/utils/bookingProviders.d.ts +25 -0
  96. package/dist/cjs/utils/bookingProviders.d.ts.map +1 -0
  97. package/dist/cjs/utils/currencies.cjs +148 -0
  98. package/dist/cjs/utils/currencies.d.ts +6 -0
  99. package/dist/cjs/utils/currencies.d.ts.map +1 -0
  100. package/dist/cjs/utils/dateTime.cjs +192 -0
  101. package/dist/cjs/utils/dateTime.d.ts +57 -0
  102. package/dist/cjs/utils/dateTime.d.ts.map +1 -0
  103. package/dist/cjs/utils/embedFrameLoader.cjs +76 -0
  104. package/dist/cjs/utils/embedFrameLoader.d.ts +15 -0
  105. package/dist/cjs/utils/embedFrameLoader.d.ts.map +1 -0
  106. package/dist/cjs/utils/extensionToContentType.cjs +24 -0
  107. package/dist/cjs/utils/extensionToContentType.d.ts +21 -0
  108. package/dist/cjs/utils/extensionToContentType.d.ts.map +1 -0
  109. package/dist/cjs/utils/generateUsername.cjs +7 -0
  110. package/dist/cjs/utils/generateUsername.d.ts.map +1 -0
  111. package/dist/cjs/utils/index.cjs +65 -0
  112. package/dist/cjs/utils/index.d.ts +26 -0
  113. package/dist/cjs/utils/index.d.ts.map +1 -0
  114. package/dist/cjs/utils/random.cjs +13 -0
  115. package/dist/cjs/utils/random.d.ts +3 -0
  116. package/dist/cjs/utils/random.d.ts.map +1 -0
  117. package/dist/cjs/utils/serviceReminderLabels.cjs +22 -0
  118. package/dist/cjs/utils/serviceReminderLabels.d.ts +5 -0
  119. package/dist/cjs/utils/serviceReminderLabels.d.ts.map +1 -0
  120. package/dist/cjs/utils/tenantSlug.cjs +299 -0
  121. package/dist/cjs/utils/tenantSlug.d.ts +7 -0
  122. package/dist/cjs/utils/tenantSlug.d.ts.map +1 -0
  123. package/dist/cjs/utils/textSlug.cjs +14 -0
  124. package/dist/cjs/utils/textSlug.d.ts +3 -0
  125. package/dist/cjs/utils/textSlug.d.ts.map +1 -0
  126. package/dist/cjs/utils/timezone.cjs +96 -0
  127. package/dist/cjs/utils/timezone.d.ts +2 -0
  128. package/dist/cjs/utils/timezone.d.ts.map +1 -0
  129. package/dist/cjs/utils/ucfirst.cjs +9 -0
  130. package/dist/cjs/utils/ucfirst.d.ts +2 -0
  131. package/dist/cjs/utils/ucfirst.d.ts.map +1 -0
  132. package/dist/constants/emailUnsubscribeReasons.d.ts +4 -0
  133. package/dist/constants/emailUnsubscribeReasons.d.ts.map +1 -0
  134. package/dist/constants/emailUnsubscribeReasons.js +10 -0
  135. package/dist/index.d.ts +9 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +8 -0
  138. package/dist/types/db.availability.d.ts +33 -0
  139. package/dist/types/db.availability.d.ts.map +1 -0
  140. package/dist/types/db.availability.js +9 -0
  141. package/dist/types/db.booking.d.ts +101 -0
  142. package/dist/types/db.booking.d.ts.map +1 -0
  143. package/dist/types/db.booking.js +1 -0
  144. package/dist/types/db.customers.d.ts +14 -0
  145. package/dist/types/db.customers.d.ts.map +1 -0
  146. package/dist/types/db.customers.js +1 -0
  147. package/dist/types/db.d.ts +11 -0
  148. package/dist/types/db.d.ts.map +1 -0
  149. package/dist/types/db.directory.d.ts +38 -0
  150. package/dist/types/db.directory.d.ts.map +1 -0
  151. package/dist/types/db.directory.js +1 -0
  152. package/dist/types/db.emailFlow.d.ts +29 -0
  153. package/dist/types/db.emailFlow.d.ts.map +1 -0
  154. package/dist/types/db.emailFlow.js +1 -0
  155. package/dist/types/db.js +1 -0
  156. package/dist/types/db.mcpUserContext.d.ts +29 -0
  157. package/dist/types/db.mcpUserContext.d.ts.map +1 -0
  158. package/dist/types/db.mcpUserContext.js +1 -0
  159. package/dist/types/db.notification.d.ts +27 -0
  160. package/dist/types/db.notification.d.ts.map +1 -0
  161. package/dist/types/db.notification.js +1 -0
  162. package/dist/types/db.oauth.d.ts +55 -0
  163. package/dist/types/db.oauth.d.ts.map +1 -0
  164. package/dist/types/db.oauth.js +1 -0
  165. package/dist/types/db.partnerApiKey.d.ts +15 -0
  166. package/dist/types/db.partnerApiKey.d.ts.map +1 -0
  167. package/dist/types/db.partnerApiKey.js +1 -0
  168. package/dist/types/db.paymentPending.d.ts +16 -0
  169. package/dist/types/db.paymentPending.d.ts.map +1 -0
  170. package/dist/types/db.paymentPending.js +1 -0
  171. package/dist/types/db.service.d.ts +145 -0
  172. package/dist/types/db.service.d.ts.map +1 -0
  173. package/dist/types/db.service.js +12 -0
  174. package/dist/types/db.tax.d.ts.map +1 -0
  175. package/dist/types/db.tenant.d.ts +118 -0
  176. package/dist/types/db.tenant.d.ts.map +1 -0
  177. package/dist/types/db.tenant.js +1 -0
  178. package/dist/types/db.tenantGroupedStat.d.ts +13 -0
  179. package/dist/types/db.tenantGroupedStat.d.ts.map +1 -0
  180. package/dist/types/db.tenantGroupedStat.js +1 -0
  181. package/dist/types/db.user.d.ts +81 -0
  182. package/dist/types/db.user.d.ts.map +1 -0
  183. package/dist/types/db.user.js +4 -0
  184. package/dist/types/db.userConfirmation.d.ts +17 -0
  185. package/dist/types/db.userConfirmation.d.ts.map +1 -0
  186. package/dist/types/db.userConfirmation.js +1 -0
  187. package/dist/types/db.userLoginSession.d.ts +28 -0
  188. package/dist/types/db.userLoginSession.d.ts.map +1 -0
  189. package/dist/types/db.userLoginSession.js +1 -0
  190. package/dist/types/db.webhook.d.ts +16 -0
  191. package/dist/types/db.webhook.d.ts.map +1 -0
  192. package/dist/types/db.webhook.js +7 -0
  193. package/dist/types/discover.d.ts +45 -0
  194. package/dist/types/discover.d.ts.map +1 -0
  195. package/dist/types/discover.js +1 -0
  196. package/dist/types/errorCodes.d.ts +147 -0
  197. package/dist/types/errorCodes.d.ts.map +1 -0
  198. package/dist/types/errorCodes.js +147 -0
  199. package/dist/types/index.d.ts +84 -0
  200. package/dist/types/index.d.ts.map +1 -0
  201. package/dist/types/index.js +28 -0
  202. package/dist/types/oauthScopes.d.ts +7 -0
  203. package/dist/types/oauthScopes.d.ts.map +1 -0
  204. package/dist/types/oauthScopes.js +28 -0
  205. package/dist/types/partnerDto.d.ts +69 -0
  206. package/dist/types/partnerDto.d.ts.map +1 -0
  207. package/dist/types/partnerDto.js +1 -0
  208. package/dist/types/pricing.d.ts +31 -0
  209. package/dist/types/pricing.d.ts.map +1 -0
  210. package/dist/types/pricing.js +1 -0
  211. package/dist/types/requestResponse.d.ts +93 -0
  212. package/dist/types/requestResponse.d.ts.map +1 -0
  213. package/dist/types/requestResponse.js +1 -0
  214. package/dist/types/subscription.d.ts +50 -0
  215. package/dist/types/subscription.d.ts.map +1 -0
  216. package/dist/types/subscription.js +1 -0
  217. package/dist/utils/bookingEmbed.d.ts +61 -0
  218. package/dist/utils/bookingEmbed.d.ts.map +1 -0
  219. package/dist/utils/bookingEmbed.js +161 -0
  220. package/dist/utils/bookingPageIcons.d.ts +160 -0
  221. package/dist/utils/bookingPageIcons.d.ts.map +1 -0
  222. package/dist/utils/bookingPageIcons.js +214 -0
  223. package/dist/utils/bookingProviders.d.ts +25 -0
  224. package/dist/utils/bookingProviders.d.ts.map +1 -0
  225. package/dist/utils/bookingProviders.js +23 -0
  226. package/dist/utils/currencies.d.ts +6 -0
  227. package/dist/utils/currencies.d.ts.map +1 -0
  228. package/dist/utils/currencies.js +145 -0
  229. package/dist/utils/dateTime.d.ts +57 -0
  230. package/dist/utils/dateTime.d.ts.map +1 -0
  231. package/dist/utils/dateTime.js +150 -0
  232. package/dist/utils/embedFrameLoader.d.ts +15 -0
  233. package/dist/utils/embedFrameLoader.d.ts.map +1 -0
  234. package/dist/utils/embedFrameLoader.js +70 -0
  235. package/dist/utils/extensionToContentType.d.ts +21 -0
  236. package/dist/utils/extensionToContentType.d.ts.map +1 -0
  237. package/dist/utils/extensionToContentType.js +20 -0
  238. package/dist/utils/generateUsername.d.ts.map +1 -0
  239. package/dist/utils/index.d.ts +26 -0
  240. package/dist/utils/index.d.ts.map +1 -0
  241. package/dist/utils/index.js +45 -0
  242. package/dist/utils/random.d.ts +3 -0
  243. package/dist/utils/random.d.ts.map +1 -0
  244. package/dist/utils/random.js +8 -0
  245. package/dist/utils/serviceReminderLabels.d.ts +5 -0
  246. package/dist/utils/serviceReminderLabels.d.ts.map +1 -0
  247. package/dist/utils/serviceReminderLabels.js +18 -0
  248. package/dist/utils/tenantSlug.d.ts +7 -0
  249. package/dist/utils/tenantSlug.d.ts.map +1 -0
  250. package/dist/utils/tenantSlug.js +293 -0
  251. package/dist/utils/textSlug.d.ts +3 -0
  252. package/dist/utils/textSlug.d.ts.map +1 -0
  253. package/dist/utils/textSlug.js +10 -0
  254. package/dist/utils/timezone.d.ts +2 -0
  255. package/dist/utils/timezone.d.ts.map +1 -0
  256. package/dist/utils/timezone.js +93 -0
  257. package/dist/utils/ucfirst.d.ts +2 -0
  258. package/dist/utils/ucfirst.d.ts.map +1 -0
  259. package/dist/utils/ucfirst.js +5 -0
  260. package/package.json +46 -0
@@ -0,0 +1,145 @@
1
+ import { DBRecord } from "./db.js";
2
+ import { BOOKING_PAGE_ICONS } from "../utils/bookingPageIcons.js";
3
+ /** Recurring/pack: e.g. "5 sessions for $200" */
4
+ export interface ServicePackSettings {
5
+ enabled: boolean;
6
+ /** Number of sessions in the pack */
7
+ sessions: number;
8
+ /** Pack price (optional; if omitted, uses sessions × single price) */
9
+ packPrice?: number;
10
+ }
11
+ /** Service location type */
12
+ export type ServiceLocationType = "none" | "google_meet" | "microsoft_teams" | "zoom" | "discord" | "slack" | "other" | "in_person";
13
+ /** Service location config */
14
+ export interface ServiceLocation {
15
+ type: ServiceLocationType;
16
+ /** For "other": custom URL */
17
+ customUrl?: string;
18
+ /** For "in_person": location ID or address */
19
+ inPersonLocationId?: string;
20
+ }
21
+ /** Notice period unit */
22
+ export type NoticePeriodUnit = "minutes" | "hours" | "days";
23
+ /** Notice period before booking */
24
+ export interface ServiceNoticePeriod {
25
+ value: number;
26
+ unit: NoticePeriodUnit;
27
+ }
28
+ /** Limits on how many times this service can be booked */
29
+ export interface ServiceLimitBookings {
30
+ /** Max bookings per day (0 = unlimited) */
31
+ maxPerDay?: number;
32
+ /** Max time in advance customers can book (replaces max days + notice period) */
33
+ maxTimeInAdvance?: ServiceNoticePeriod;
34
+ /** Min time in advance – customers must book at least this far ahead */
35
+ minTimeInAdvance?: ServiceNoticePeriod;
36
+ /** Manual approval required for bookings */
37
+ manualApprovalRequired?: boolean;
38
+ /** Allow multiple bookings per user for same service */
39
+ allowMultiplePerUser?: boolean;
40
+ }
41
+ /** Group booking settings */
42
+ export interface ServiceGroupBooking {
43
+ enabled: boolean;
44
+ maxParticipants: number;
45
+ showRemainingSeats: boolean;
46
+ }
47
+ /** Question answer type */
48
+ export type ServiceQuestionType = "text" | "number" | "date" | "time" | "select" | "multi_select" | "yes_no" | "rating" | "comment";
49
+ /** Service question for customization */
50
+ export interface ServiceQuestion {
51
+ id: string;
52
+ label: string;
53
+ type: ServiceQuestionType;
54
+ required: boolean;
55
+ /** For select/multi_select: options */
56
+ options?: string[];
57
+ /** For rating: max value (e.g. 5) */
58
+ ratingMax?: number;
59
+ order: number;
60
+ }
61
+ /** Questions section */
62
+ export interface ServiceQuestions {
63
+ questions: ServiceQuestion[];
64
+ showToBooker: boolean;
65
+ }
66
+ /** All valid reminder lead times before the appointment (relative to start) */
67
+ export declare const SERVICE_REMINDER_OFFSETS: readonly ["15_minutes", "30_minutes", "1_hour", "3_hours", "6_hours", "12_hours", "1_day", "1_week", "1_month"];
68
+ export type ServiceReminderOffset = (typeof SERVICE_REMINDER_OFFSETS)[number];
69
+ /** Duration unit for custom duration */
70
+ export type DurationUnit = "minutes" | "hours" | "days";
71
+ export interface Service extends DBRecord {
72
+ name: string;
73
+ recordType: "SERVICE";
74
+ /** HTML string when rich text is used */
75
+ description: string;
76
+ duration: number;
77
+ tenantId: string;
78
+ slug: string;
79
+ availabilityId: string;
80
+ category: ServiceCategory;
81
+ /** Unit for custom duration display */
82
+ durationUnit: DurationUnit;
83
+ price: number;
84
+ currency: string;
85
+ slugHistory: string[];
86
+ /** Draft services are not published */
87
+ isDraft?: boolean;
88
+ status?: "active" | "inactive" | "draft";
89
+ /** Icon ID for service display (Lucide icon name, e.g. "Tag") */
90
+ iconId?: keyof typeof BOOKING_PAGE_ICONS;
91
+ /** Whether to show this service on the public booking page */
92
+ displayOnBookingPage: boolean;
93
+ displayInDirectories: boolean;
94
+ reservedDuration: number;
95
+ reservedDurationUnit: DurationUnit;
96
+ /** Deposit required before booking */
97
+ depositEnabled: boolean;
98
+ depositAmount?: number;
99
+ /** Recurring/pack settings (e.g. "5 sessions for $200") */
100
+ pack?: ServicePackSettings;
101
+ /** Staff IDs who can provide this service */
102
+ providerIds: string[];
103
+ /** When false, system auto-assigns a provider; when true, bookers can select */
104
+ allowBookerToSelectProvider?: boolean;
105
+ /** Booking limits */
106
+ limitBookings?: ServiceLimitBookings;
107
+ /** Where the service is provided */
108
+ location?: ServiceLocation;
109
+ /** Enable charging for this service */
110
+ chargeEnabled?: boolean;
111
+ /** Whether this service is taxable */
112
+ taxable?: boolean;
113
+ /** Tax ID when taxable (references a tenant tax) */
114
+ taxId?: string;
115
+ /** Group booking settings */
116
+ groupBooking?: ServiceGroupBooking;
117
+ /** Custom questions for the service */
118
+ questions?: ServiceQuestions;
119
+ /** Timezone override (if different from business) */
120
+ timezone?: string;
121
+ /** Reminder lead times before the appointment (e.g. email/SMS when implemented) */
122
+ reminderOffsets?: ServiceReminderOffset[];
123
+ /**
124
+ * Product ID on JASDK
125
+ */
126
+ productId?: string;
127
+ prices: Array<{
128
+ id: string;
129
+ price: number;
130
+ currency: string;
131
+ taxIds: Array<string>;
132
+ }>;
133
+ /** Aggregate of `customerRating` on completed bookings for this service */
134
+ ratingSummary?: ServiceRatingSummary;
135
+ }
136
+ export interface ServiceRatingSummary {
137
+ average: number;
138
+ count: number;
139
+ }
140
+ export interface ServiceSlot {
141
+ start: string;
142
+ end: string;
143
+ }
144
+ export type ServiceCategory = "animals" | "business" | "education" | "entertainment" | "faith" | "fashion" | "fitness" | "food" | "health" | "music" | "politics" | "science" | "sports" | "technology" | "travel" | "other";
145
+ //# sourceMappingURL=db.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.service.d.ts","sourceRoot":"","sources":["../../../src/types/db.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.tax.d.ts","sourceRoot":"","sources":["../../../src/types/db.tax.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,GAAI,SAAQ,QAAQ;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,118 @@
1
+ import { DBRecord } from "./db.js";
2
+ import { User, UserTenant } from "./db.user.js";
3
+ export interface Tenant extends DBRecord {
4
+ name: string;
5
+ slug: string;
6
+ email: string;
7
+ ownerId: string;
8
+ logoUrl: string;
9
+ currency: string;
10
+ timezone: string;
11
+ phoneNumber: string;
12
+ users: UserTenant[];
13
+ description: string;
14
+ recordType: "TENANT";
15
+ timeFormat: "12h" | "24h";
16
+ dateFormat: "DD/MM/YYYY" | "MM/DD/YYYY";
17
+ address: {
18
+ city: string;
19
+ state: string;
20
+ line1: string;
21
+ line2: string;
22
+ country: string;
23
+ postalCode: string;
24
+ };
25
+ limitTracker: {
26
+ events: number;
27
+ services: number;
28
+ bookings: number;
29
+ calendars: number;
30
+ integrations: number;
31
+ };
32
+ notifications: {
33
+ reminders: boolean;
34
+ statusChange: boolean;
35
+ bookingConfirmation: boolean;
36
+ };
37
+ bookingPage: {
38
+ url: string;
39
+ title: string;
40
+ accentColor: string;
41
+ customColor?: string;
42
+ description: string;
43
+ layout: "list" | "grid";
44
+ };
45
+ stripePayment?: {
46
+ enabled: boolean;
47
+ publishableKey: string;
48
+ secretKey: string;
49
+ };
50
+ paypalPayment?: {
51
+ enabled: boolean;
52
+ clientId: string;
53
+ clientSecret: string;
54
+ };
55
+ paystackPayment?: {
56
+ enabled: boolean;
57
+ publicKey: string;
58
+ secretKey: string;
59
+ };
60
+ voucherPayment?: {
61
+ enabled: boolean;
62
+ discountCodes?: Array<{
63
+ id?: string;
64
+ code: string;
65
+ title: string;
66
+ percentage: number;
67
+ startDate: string;
68
+ endDate: string;
69
+ }>;
70
+ };
71
+ flutterwavePayment?: {
72
+ enabled: boolean;
73
+ publicKey: string;
74
+ secretKey: string;
75
+ };
76
+ bankAccount?: {
77
+ enabled?: boolean;
78
+ accountNumber?: string;
79
+ accountName?: string;
80
+ bankName?: string;
81
+ bankCode?: string;
82
+ bankAddress?: string;
83
+ bankCity?: string;
84
+ bankState?: string;
85
+ };
86
+ stripeConnect?: {
87
+ connected: boolean;
88
+ accessToken: string;
89
+ refreshToken: string;
90
+ expiresAt: string;
91
+ };
92
+ subscription: User["subscription"];
93
+ jaySDK?: {
94
+ clientId: string;
95
+ clientSecret: string;
96
+ };
97
+ /** Google OAuth tokens for Calendar/Meet integration */
98
+ googleIntegration?: TenantIntegration;
99
+ /** Microsoft 365 OAuth (Outlook calendar + Teams meetings) */
100
+ microsoftIntegration?: TenantIntegration;
101
+ /** Zoom OAuth for creating meeting links */
102
+ zoomIntegration?: TenantIntegration;
103
+ }
104
+ export type TenantIntegration = {
105
+ connected: boolean;
106
+ accessToken: string;
107
+ refreshToken: string;
108
+ expiresAt: string;
109
+ };
110
+ export interface DashboardAnalytics {
111
+ teamMembers: number;
112
+ appointments: {
113
+ total: number;
114
+ today: number;
115
+ thisWeek: number;
116
+ };
117
+ }
118
+ //# sourceMappingURL=db.tenant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.tenant.d.ts","sourceRoot":"","sources":["../../../src/types/db.tenant.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ import { DBRecord } from "./db.js";
2
+ export type TenantGroupedStatType = "aiCalls" | "bookings";
3
+ export interface TenantGroupedStat extends DBRecord {
4
+ tenantId: string;
5
+ userId: string;
6
+ group: string;
7
+ ids: string[];
8
+ totals: number[];
9
+ currency?: string;
10
+ type: TenantGroupedStatType;
11
+ recordType: "TENANT_GROUPED_STAT";
12
+ }
13
+ //# sourceMappingURL=db.tenantGroupedStat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.tenantGroupedStat.d.ts","sourceRoot":"","sources":["../../../src/types/db.tenantGroupedStat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC;AAC3D,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,EAAE,qBAAqB,CAAC;CACrC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPasswordSetByUser = isPasswordSetByUser;
4
+ /** True only when the user chose their Cognito password (email signup or after set-password). */
5
+ function isPasswordSetByUser(user) {
6
+ return user.cognitoRecord.details.passwordSetByUser === true;
7
+ }
@@ -0,0 +1,81 @@
1
+ import { DBRecord } from "./db.js";
2
+ import { Subscription } from "./subscription.js";
3
+ export type UserLanguageType = "en" | "es" | "fr";
4
+ export type UserStatus = "active" | "inactive" | "blocked";
5
+ export type UserRoleType = "super_admin" | "owner" | "service_provider" | "customer";
6
+ export type SubscriptionFrequency = "monthly" | "yearly";
7
+ export interface UserTenant {
8
+ /** The ID of the tenant or user id */
9
+ id: string;
10
+ ownerId: string;
11
+ addedOn: string;
12
+ role: UserRoleType;
13
+ }
14
+ export interface User extends DBRecord {
15
+ email: string;
16
+ recordType: "USER";
17
+ lastLoginOn?: string;
18
+ tenants: UserTenant[];
19
+ /**
20
+ * Customer ID for JAY SDK
21
+ */
22
+ customerId?: string;
23
+ subscription: {
24
+ id: string;
25
+ amount: number;
26
+ currency: string;
27
+ startDate: string;
28
+ endDate?: string;
29
+ autorenew: boolean;
30
+ productId?: string;
31
+ details: Subscription;
32
+ invoiceNumber?: string;
33
+ productPriceId?: string;
34
+ nextBillingDate?: string;
35
+ productGroup: "subscription";
36
+ frequency: SubscriptionFrequency;
37
+ provider?: "flutterwave" | "stripe" | "paypal" | "paystack" | "voucher";
38
+ };
39
+ cognitoRecord: CognitoUserSchema;
40
+ /**
41
+ * Server-only Cognito password for Google sign-in (auto-generated).
42
+ * Never expose to clients.
43
+ */
44
+ cognitoBootstrapPassword?: string;
45
+ }
46
+ export interface CognitoUserSchema {
47
+ sub: string;
48
+ dob: string;
49
+ email: string;
50
+ mobile: string;
51
+ picture: string;
52
+ address: string;
53
+ website: string;
54
+ username: string;
55
+ fullName: string;
56
+ nickName: string;
57
+ lastName: string;
58
+ firstName: string;
59
+ verified: boolean;
60
+ locale: UserLanguageType;
61
+ details: {
62
+ timezone: string;
63
+ status: UserStatus;
64
+ mfaEnabled: boolean;
65
+ /** False when Cognito password was auto-generated (e.g. Google-only signup). */
66
+ passwordSetByUser?: boolean;
67
+ };
68
+ }
69
+ /** True only when the user chose their Cognito password (email signup or after set-password). */
70
+ export declare function isPasswordSetByUser(user: Pick<User, "cognitoRecord">): boolean;
71
+ export interface Staff {
72
+ id: string;
73
+ name: string;
74
+ email: string;
75
+ phone: string;
76
+ picture: string;
77
+ /** Date the staff member was added to the tenant profile */
78
+ addedOn: string;
79
+ role: UserRoleType;
80
+ }
81
+ //# sourceMappingURL=db.user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.user.d.ts","sourceRoot":"","sources":["../../../src/types/db.user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,OAAO,GAAG,kBAAkB,GAAG,UAAU,CAAC;AACrF,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,UAAU;IACvB,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;CACtB;AACD,MAAM,WAAW,IAAK,SAAQ,QAAQ;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,YAAY,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,cAAc,CAAC;QAC7B,SAAS,EAAE,qBAAqB,CAAC;QACjC,QAAQ,CAAC,EAAE,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;KAC3E,CAAC;IACF,aAAa,EAAE,iBAAiB,CAAC;IACjC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,UAAU,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,gFAAgF;QAChF,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;CACL;AAED,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,OAAO,CAE9E;AAED,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,17 @@
1
+ import { DBRecord } from "./db.js";
2
+ export interface UserConfirmation extends DBRecord {
3
+ code: string;
4
+ email: string;
5
+ sentOn: string;
6
+ expiresOn: string;
7
+ durationInMinutes: number;
8
+ recordType: "USER_CONFIRMATION";
9
+ reason: "RESET_PASSWORD" | "VERIFY_EMAIL" | "DELETE_ACCOUNT" | "DELETE_TENANT" | "CANCEL_BOOKING";
10
+ /** Required when reason is CANCEL_BOOKING */
11
+ bookingId?: string;
12
+ /** Required when reason is DELETE_TENANT (business profile deletion) */
13
+ tenantId?: string;
14
+ /** Required when reason is CANCEL_BOOKING */
15
+ link?: string;
16
+ }
17
+ //# sourceMappingURL=db.userConfirmation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.userConfirmation.d.ts","sourceRoot":"","sources":["../../../src/types/db.userConfirmation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,CAAC;IAClG,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,28 @@
1
+ import { DBRecord } from "./db.js";
2
+ import { Tenant } from "./db.tenant.js";
3
+ import { User, UserStatus } from "./db.user.js";
4
+ export interface UserLoginSession extends DBRecord {
5
+ ip: string;
6
+ recordType: "USER_LOGIN_SESSION";
7
+ tokens: {
8
+ idToken: string;
9
+ accessToken: string;
10
+ refreshToken: string;
11
+ };
12
+ isFirstLogin: boolean;
13
+ userId: string;
14
+ browserId: string;
15
+ browser: string;
16
+ device: string;
17
+ endDate?: string;
18
+ startDate: string;
19
+ username: string;
20
+ status: UserStatus;
21
+ }
22
+ export interface ThisSession {
23
+ user: User;
24
+ tenants: Tenant[];
25
+ browserId: string;
26
+ session: UserLoginSession;
27
+ }
28
+ //# sourceMappingURL=db.userLoginSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.userLoginSession.d.ts","sourceRoot":"","sources":["../../../src/types/db.userLoginSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,oBAAoB,CAAC;IACjC,MAAM,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;CAC7B"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PARTNER_WEBHOOK_EVENTS = void 0;
4
+ exports.PARTNER_WEBHOOK_EVENTS = [
5
+ "booking.created",
6
+ "booking.updated",
7
+ "booking.cancelled",
8
+ "customer.created",
9
+ "customer.updated",
10
+ ];
@@ -0,0 +1,16 @@
1
+ import { DBRecord } from "./db.js";
2
+ export declare const PARTNER_WEBHOOK_EVENTS: readonly ["booking.created", "booking.updated", "booking.cancelled", "customer.created", "customer.updated"];
3
+ export type PartnerWebhookEvent = (typeof PARTNER_WEBHOOK_EVENTS)[number];
4
+ export interface WebhookSubscription extends DBRecord {
5
+ recordType: "WEBHOOK_SUBSCRIPTION";
6
+ id: string;
7
+ tenantId: string;
8
+ clientId: string;
9
+ userId: string;
10
+ url: string;
11
+ events: PartnerWebhookEvent[];
12
+ secret: string;
13
+ enabled: boolean;
14
+ failureCount: number;
15
+ }
16
+ //# sourceMappingURL=db.webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.webhook.d.ts","sourceRoot":"","sources":["../../../src/types/db.webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,eAAO,MAAM,sBAAsB,8GAMzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,UAAU,EAAE,sBAAsB,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,45 @@
1
+ import type { DurationUnit, ServiceCategory, ServiceLocationType, ServiceRatingSummary } from "./db.service.js";
2
+ export type DiscoverSort = "relevance" | "rating" | "price_asc" | "price_desc" | "newest";
3
+ export type DiscoverLocationFilter = "in_person" | "online" | "any";
4
+ export interface DiscoverBusinessAddress {
5
+ city: string;
6
+ state: string;
7
+ country: string;
8
+ line1?: string;
9
+ lat?: number;
10
+ lng?: number;
11
+ }
12
+ export interface DiscoverItem {
13
+ tenantId: string;
14
+ serviceId: string;
15
+ title: string;
16
+ description: string;
17
+ url: string;
18
+ category?: ServiceCategory;
19
+ locationType: ServiceLocationType;
20
+ timezone: string;
21
+ duration: {
22
+ value: number;
23
+ unit: DurationUnit;
24
+ };
25
+ price: {
26
+ value: number;
27
+ currency: string;
28
+ };
29
+ business: {
30
+ name: string;
31
+ logoUrl: string;
32
+ slug?: string;
33
+ };
34
+ address?: DiscoverBusinessAddress;
35
+ rating?: ServiceRatingSummary;
36
+ distanceKm?: number;
37
+ boosted?: boolean;
38
+ }
39
+ export interface DiscoverResponse {
40
+ page: number;
41
+ pageSize: number;
42
+ total: number;
43
+ items: DiscoverItem[];
44
+ }
45
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/types/discover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEhH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC1F,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC;IAChD,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB"}